#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-'0',ch=getchar();return x*f;}
inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>=10)write(x/10);putchar(x%10+'0');}
int a[100005],c[100005],ans[25],xn[5];
char ch[25][200005];
struct Node{
    int i,n;
};
int lo(int i){
    int ans=0;
    while(i){
        i>>=1;
        ++ans;
    }
    return ans-1;
}
void main1(){
    int n=read(),m=read();
    for(int i=1;i<=n;++i){
        a[i]=read();
    }
    for(int i=0;i<m;++i){
        c[i]=read();
    }
    int num=1,l=0;
    while(num<n){
        num<<=1;
        ++l;
    }
    for(int i=0;i<l;++i){
        cin>>ch[i];
    }
    int t=read();
    while(t--){
        for(int i=0;i<4;++i){
            xn[i]=read();
        }
        queue<Node>q,q1;
        for(int i=1;i<=n;++i){
            q.push({i,a[i]^xn[i%4]});
        }
        ans[0]=1;
        for(int j=0;q.size()>1;++j){
            for(int k=0;!q.empty();++k){
                Node a=q.front();
                q.pop();
                if(q.empty()){
                    q1.push(a);
                    break;
                }
                Node b=q.front();
                q.pop();
                if(ch[j][k]=='0'){
                    if(a.n>j){
                        q1.push(a);
                    }else{
                        q1.push(b);
                    }
                }else{
                    if(b.n>j){
                        q1.push(b);
                    }else{
                        q1.push(a);
                    }
                }
            }
            while(!q1.empty()){
                q.push(q1.front());
                q1.pop();
            }
            ans[j+1]=q.front().i;
        }
        int an=0;
        for(int i=0;i<m;++i){
            an^=(i+1)*ans[lo(c[i])];
        }
        write(an);
        putchar('\n');
    }
    return;
}
signed main(){
    freopen("arena.in","r",stdin);
    freopen("arena.out","w",stdout);
    int t=1;
    while(t--){
        main1();
    }
    return 0;
}
